ass Solution {
public:
    void removeExtraSpaces(string& s) 
    {//去除所有空格并在相邻单词之间添加空格, 快慢指针。
        int slow = 0;
        for (int i = 0; i < s.size(); i++)
        {
            if (s[i] != ' ')
            {
                if (slow != 0)
                {
                    s[slow] = ' ';
                    slow++;
                }

                while (s[i] != ' ' &&  i < s.size())
                {
                    s[slow++] = s[i++];
                }
            }  
  
        } 
        s.resize(slow); //slow的大小即为去除多余空格后的大小。
    }

    string reverseWords(string s) {
        removeExtraSpaces(s); //去除多余空格，保证单词之间之只有一个空格，且字符串首尾没空格。
        reverse(s.begin() , s.end());

        int pos2 = 0;
        int pos1 = s.find(' ');

        while (pos1 != string :: npos)
        {
            reverse(s.begin() + pos2 , s.begin() + pos1);
            pos2 = pos1 + 1;
            pos1 = s.find(' ' , pos2); 
        }

        pos1 = s.rfind(' ');
        reverse(s.begin() + pos1 + 1 , s.end());
        return s;
    }
};

